gdkwindow: Don't do some extra work
authorJasper St. Pierre <jstpierre@mecheye.net>
Mon, 23 Jun 2014 20:12:45 +0000 (16:12 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Mon, 23 Jun 2014 20:43:32 +0000 (16:43 -0400)
We can do an early return in some specific cases before we need to
create and clip a cairo region.

gdk/gdkwindow.c

index 597556e8375fc792db81b49e0e544107fcb93bcc..db7b6403125c9040fe889923190a0af0816ba12d 100644 (file)
@@ -3246,19 +3246,22 @@ _gdk_window_process_updates_recurse_helper (GdkWindow *window,
   cairo_region_t *clipped_expose_region;
   GList *l, *children;
 
+  if (window->destroyed)
+    return;
+
+  if (window->alpha == 0 && !gdk_window_has_impl (window))
+    return;
+
   clipped_expose_region = cairo_region_copy (expose_region);
   cairo_region_translate (clipped_expose_region, dx, dy);
   cairo_region_intersect (clipped_expose_region, window->clip_region);
 
-  if (cairo_region_is_empty (clipped_expose_region) || window->destroyed)
+  if (cairo_region_is_empty (clipped_expose_region))
     goto out;
 
   if (gdk_window_is_offscreen (window))
     gdk_window_add_damage (window, clipped_expose_region);
 
-  if (window->alpha == 0 && !gdk_window_has_impl (window))
-    goto out;
-
   /* Paint the window before the children, clipped to the window region */
 
   /* While gtk+ no longer handles exposes on anything but native